/*
 * 文件名： BisRealNameCertify.java
 * 
 * 工程名称: common-domain
 *
 * Gopay
 *
 * 创建日期： 2016年6月12日
 *
 * Copyright(C) 2016, by www.gopay.com.cn Inc.All rights reserved.
 *
 * 原始作者: 宣广海
 *
 */
package com.gopay.common.domain.bis;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import com.gopay.common.cipher.utils.SensitiveInfoUtils;
import com.gopay.common.domain.BaseEntity;

/**
 * 
 *
 * @author 宣广海
 *
 * @version
 *
 * @since 2016年6月12日
 */
@Entity
@Table(name = "BIS_REAL_NAME_CERTIFY")
public class BisRealNameCertify extends BaseEntity {

    private static final long serialVersionUID = 5402659789777751317L;
    /**
	 * 主键
	 */
	
	private Long id;
	/**
	 * 实名认证服务提供方接口代码
	 */
	private String certifyCode;
	/**
	 * 证件类型
	 */
	
	private String cardType;
	/**
	 * 证件号码（目前全是身份证）
	 */

	private String cardNo;
	/**
	 * 姓名
	 */

	private String name;

	/**
	 * 手机号
	 */

	private String mobile;
	/**
	 * 银行卡号
	 */
	private String bankCardNo;

	/**
	 * 调用源
	 */
	
	private String source;
	/**
	 * 每次查询的UUID
	 */
	private String querySeq;
	/**
	 * 实名认证状态 01：实名认证一致 02：实名认证不一致 03：未查询到记录
	 * 
	 */
	
	private String state;
	/**
	 * 认证日期
	 */
	
	private Date certifyDate;
	/**
	 * 创建时间
	 */
	
	private Date createdTs;
	/**
	 * 最后修改时间
	 */
	
	private Date lastUpdTs;
	/**
	 * 乐观锁版本号
	 */
	
	private String version;
	
	/**
	 * @return 返回 id。
	 */
	@Id
	@SequenceGenerator(name = "BIS_REAL_NAME_CERTIFY_SEQ_GENERATOR", sequenceName = "BIS_REAL_NAME_CERTIFY_SEQ", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "BIS_REAL_NAME_CERTIFY_SEQ_GENERATOR")
	@Column(name = "ID")
	public Long getId() {
		return id;
	}
	/**
	 * @param id 要设置的 id。
	 */
	public void setId(Long id) {
		this.id = id;
	}
	/**
	 * @return 返回 certifyCode。
	 */
	 @Column(name = "CERTIFY_CODE")
	public String getCertifyCode() {
		return certifyCode;
	}
	/**
	 * @param certifyCode 要设置的 certifyCode。
	 */
	public void setCertifyCode(String certifyCode) {
		this.certifyCode = certifyCode;
	}
	/**
	 * @return 返回 cardType。
	 */
	 
	@Column(name = "CARD_TYPE")
	public String getCardType() {
		return cardType;
	}
	/**
	 * @param cardType 要设置的 cardType。
	 */
	public void setCardType(String cardType) {
		this.cardType = cardType;
	}
	/**
	 * @return 返回 cardNo。
	 */
	@Column(name = "CARD_NO")
	public String getCardNo() {
		/**
		 * modify by ssj，2017-4-17 在程序中获取的时候进行解密操作，如果是hibernate自己调用（save等），则返回原值；
		 */
		this.cardNo = SensitiveInfoUtils.autoReencrypt(this.cardNo);
		return SensitiveInfoUtils.smartDecryptWithCheck(this.cardNo);
	}
	/**
	 * @param cardNo 要设置的 cardNo。
	 */
	public void setCardNo(String cardNo) {
		/**
		 * modified by ssj，2017-4-10 判断传入字符串是否经过加密，如果是，则设置为原文，否则设置为加密后的值
		 */
		this.cardNo = SensitiveInfoUtils.smartEncryptWithCheck(cardNo);
	}
	/**
	 * @return 返回 name。
	 */
	
	@Column(name = "NAME")
	public String getName() {
		/**
		 * modify by ssj，2017-4-17 在程序中获取的时候进行解密操作，如果是hibernate自己调用（save等），则返回原值；
		 */
		this.name = SensitiveInfoUtils.autoReencrypt(this.name);
		return SensitiveInfoUtils.smartDecryptWithCheck(this.name);
	}
	/**
	 * @param name 要设置的 name。
	 */
	public void setName(String name) {
		/**
		 * modified by ssj，2017-4-10 判断传入字符串是否经过加密，如果是，则设置为原文，否则设置为加密后的值
		 */
		this.name = SensitiveInfoUtils.smartEncryptWithCheck(name);
	}
	/**
	 * @return 返回 source。
	 */
	@Column(name = "SOURCE")
	public String getSource() {
		return source;
	}
	/**
	 * @param source 要设置的 source。
	 */
	public void setSource(String source) {
		this.source = source;
	}
	/**
	 * @return 返回 querySeq。
	 */
	 
	@Column(name = "QUERY_SEQ")
	public String getQuerySeq() {
		return querySeq;
	}
	/**
	 * @param querySeq 要设置的 querySeq。
	 */
	public void setQuerySeq(String querySeq) {
		this.querySeq = querySeq;
	}
	/**
	 * @return 返回 state。
	 */
	@Column(name = "STATE")
	public String getState() {
		return state;
	}
	/**
	 * @param state 要设置的 state。
	 */
	public void setState(String state) {
		this.state = state;
	}
	/**
	 * @return 返回 certifyDate。
	 */
	@Column(name = "CERTIFY_DATE")
	public Date getCertifyDate() {
		return certifyDate;
	}
	/**
	 * @param certifyDate 要设置的 certifyDate。
	 */
	public void setCertifyDate(Date certifyDate) {
		this.certifyDate = certifyDate;
	}
	/**
	 * @return 返回 createdTs。
	 */
	@Column(name = "CREATED_TS")
	public Date getCreatedTs() {
		return createdTs;
	}
	/**
	 * @param createdTs 要设置的 createdTs。
	 */
	public void setCreatedTs(Date createdTs) {
		this.createdTs = createdTs;
	}
	/**
	 * @return 返回 lastUpdTs。
	 */
	 
	@Column(name = "LAST_UPD_TS")
	public Date getLastUpdTs() {
		return lastUpdTs;
	}
	/**
	 * @param lastUpdTs 要设置的 lastUpdTs。
	 */
	public void setLastUpdTs(Date lastUpdTs) {
		this.lastUpdTs = lastUpdTs;
	}
	/**
	 * @return 返回 version。
	 */
	 
	@Column(name = "VERSION")
	public String getVersion() {
		return version;
	}
	/**
	 * @param version 要设置的 version。
	 */
	public void setVersion(String version) {
		this.version = version;
	}
	@Column(name = "MOBILE_NO")
    public String getMobile() {
		/**
		 * modify by ssj，2017-4-17 在程序中获取的时候进行解密操作，如果是hibernate自己调用（save等），则返回原值；
		 */
		this.mobile = SensitiveInfoUtils.autoReencrypt(this.mobile);
		return SensitiveInfoUtils.smartDecryptWithCheck(this.mobile);
    }
    public void setMobile(String mobile) {
    	/**
		 * modified by ssj，2017-05-04判断传入字符串是否经过加密，如果是，则设置为原文，否则设置为加密后的值
		 */
		this.mobile = SensitiveInfoUtils.smartEncryptWithCheck(mobile);
    }
    
    @Column(name = "BANK_CARD_NO")
    public String getBankCardNo() {
    	/**
		 * modify by ssj，2017-05-04 在程序中获取的时候进行解密操作，如果是hibernate自己调用（save等），则返回原值；
		 */
		this.bankCardNo = SensitiveInfoUtils.autoReencrypt(this.bankCardNo);
		return SensitiveInfoUtils.smartDecryptWithCheck(this.bankCardNo);
    }
    public void setBankCardNo(String bankCardNo) {
        /**
		 * modified by ssj，2017-05-04 判断传入字符串是否经过加密，如果是，则设置为原文，否则设置为加密后的值
		 */
		this.bankCardNo = SensitiveInfoUtils.smartEncryptWithCheck(bankCardNo);
    }

    

}
